草庐IT

Python Django 模板 : Iterate Through List

全部标签

c++ - 定义中的模板函数

我有一些模板函数,我想在C++中使用define调用它:#defineCONFIG(key,type,def)getValue(key,def);当然不行。我可以做这样的东西吗? 最佳答案 它工作正常:templateTgetValue(int,int){returnT();}#defineCONFIG(key,type,def)getValue(key,def);intmain(){CONFIG(1,int,2);return0;} 关于c++-定义中的模板函数,我们在StackOve

c++ - CRTP 中的模板化派生类(奇怪的重复模板模式)

我使用的CRTP不能用g++4.2.1编译,也许是因为派生类本身就是一个模板?有谁知道为什么这不起作用,或者更好的是,如何让它起作用?示例代码和编译器错误如下。来源:foo.C#includeusingnamespacestd;templatestructfoo;templatestructbar:foo>{Xevaluate(){returnstatic_cast(5.3);}};templatestructbaz:foo>{Xevaluate(){returnstatic_cast("elk");}};templatestructfoo:D{Xoperator()(){return

c++ - 为派生类提供模板特化的最简单方法

我有以下场景:classmy_base{...}classmy_derived:publicmy_base{...};templatestructmy_traits;我想为从my_base派生的所有类专门化my_traits,包括,例如:template//Yisderivedformmy_base.structmy_traits{...};我可以毫无问题地向my_base添加标签和成员以使其更简单。我已经看到了一些技巧,但我仍然感到迷茫。如何以简单快捷的方式做到这一点? 最佳答案 好吧,你不需要自己写isbaseof。您可以使用b

c++ - 为什么以下 SFINAE 测试无法检测到模板成员函数?

使用GCC编译时,我从以下代码中得到的结果总是错误的。我相信这是一个编译器错误,但有人可能知道得更多。#includetemplateclasshas_apply{typedefcharyes[1];typedefcharno[2];templatestructbinder{};templatestaticyes&test(U*,binder>*=0);templatestaticno&test(...);public:staticconstboolresult=(sizeof(yes)==sizeof(test((T*)(0))));};classA{public:templatev

c++ - 模板化时没有发生隐式转换

这里有几个相关但不同的类。一个包含float列表;一个只包含一个。有时我想,比如说,将它们相乘。在那种情况下,我想将非列表“提升”到列表中。这是代码,它按照我想要的方式工作。#defineLIST_SZ4classVec1;classVec1_list{public:Vec1_list(){}Vec1_list(constVec1&in);floatx[LIST_SZ];};classVec1{public:Vec1(){}Vec1(constfloat&in);floatx;};Vec1::Vec1(constfloat&in){x=in;}Vec1_list::Vec1_list(

c++ - 函数模板的显式实例化失败 (g++)

我在显式实例化函数模板时遇到了一些问题(即链接错误)。VisualStudio下项目链接正常,只有在g++/Unix下,使用Eclipse-CDT,链接出错。函数调用是一个静态库的一部分,在一个大项目中与动态库链接。该函数的架构如下:函数模板在我的MathUtils.h文件的命名空间内声明(但未实现)。其中一个函数参数本身就是一个结构模板,在这个h文件(在同一命名空间下)中声明并实现。函数实现和实例化在MathUtils.cpp中。函数调用在someFile.cpp(当然是#include"MathUtils.h")中,它作为静态库的一部分进行编译和链接。让我(几乎)发疯的是构建错误不

c++ - 模板和 friend

在阅读ThinkinginC++Volume2的“深度模板”一章时,我发现如果模板类中有一个友好的函数,则需要转发该函数的声明。我做了这个例子来测试这个,覆盖输出运算符:#includeusingnamespacestd;/*templateclassX;templateostream&operator&x);*/templateclassX{Tt;public:X(Ti):t(i){}friendostream&operator&x){returnosa(1);cout但它在没有前向声明的情况下也能工作,但后来我用类外的friendostream&operator(ostream&o

c++ - GCC 中的元组模板

我首先在VS2010中使用MicrosoftVC++开始使用C++。我最近找到了一些工作,但我一直在使用RHEL5和GCC。我的代码主要是原生C++,但我注意到一件事......GCC似乎无法识别头文件或元组模板。起初我以为这可能只是一个拼写错误,直到我查看cplusplus.com发现该header确实不是标准库的一部分。问题是我喜欢在VisualStudio中编写代码,因为它的环境比eclipse或netbeans更优越、更美观,而且调试也很容易。问题是,我已经编写了大量代码来使用元组,而且我真的很喜欢我的代码。我该如何处理这个问题?这是我的代码:usingstd::cout;us

c++ - 如何在 cpp 文件中为多种类型创建模板类成员实现

我有一个名为w32file的模板类,它适用于wchar_t和char。它声明:templateclassw32file{...}它有很多成员方法,比如这个:inlineboolisDirectory();现在我知道我可以将这些成员方法的所有实现放在头文件中,然后它们将被编译到使用我的模板的任何目标文件中。但是,我真的不想要这个,因为这个类将在所有地方使用,并且会导致大量重复的目标代码。所以目前,我有一个链接到静态库的cpp文件,它执行此操作:boolw32utils::w32file::isDirectory(){autodwAttr=GetFileAttributes(m_name.

c++ - 由于抽象模板 arg 的实例化,boost::lambda 表达式无法编译。任何解释和/或解决方法?

我正在学习boost::lambda,并且我已经设法创造了一个我目前所知道的无法解决的情况。显然在boost::lambda的内部,以下示例导致尝试实例化抽象类AbstractFoo,并阻止lambda表达式编译。问题是我不知道它为什么要实例化它,所以我无法尝试解决它。​​任何boost::lambda专家都可以:请告诉我为什么会这样?建议解决方法?例子:#include#include#include#includestructAbstractFoo{typedefboost::shared_ptrPtr;virtualintit()const=0;};structBar:publi